import { PrismaClient } from '@prisma/client';
import * as bcrypt from 'bcrypt';

const prisma = new PrismaClient();

/**
 * 创建测试管理员账号（非交互式）
 * 用户名: admin
 * 密码: password123
 */
async function createTestAdmin() {
  try {
    const username = 'admin';
    const password = 'password123';

    // 检查用户名是否已存在
    const existingUser = await prisma.user.findFirst({
      where: { username }
    });

    if (existingUser) {
      console.log(`✅ 管理员账号 "${username}" 已存在，无需重复创建`);
      console.log(`用户ID: ${existingUser.id}`);
      console.log(`角色: ${existingUser.role}`);
      await prisma.$disconnect();
      process.exit(0);
    }

    // 加密密码
    console.log('正在加密密码...');
    const hashedPassword = await bcrypt.hash(password, 10);

    // 生成唯一的管理员openid
    const adminOpenid = `admin_${Date.now()}_${Math.random().toString(36).substring(7)}`;

    // 创建管理员用户
    console.log('正在创建管理员账号...');
    const admin = await prisma.user.create({
      data: {
        openid: adminOpenid,
        username,
        password: hashedPassword,
        nickname: `管理员-${username}`,
        role: 'ADMIN'
      }
    });

    console.log('\n✅ 测试管理员账号创建成功！');
    console.log('\n账号信息:');
    console.log(`  用户ID: ${admin.id}`);
    console.log(`  用户名: ${admin.username}`);
    console.log(`  密码: ${password}`);
    console.log(`  角色: ${admin.role}`);
    console.log(`  创建时间: ${admin.createdAt}`);
    console.log('\n请妥善保管您的登录凭证！\n');

    await prisma.$disconnect();
    process.exit(0);

  } catch (error) {
    console.error('\n❌ 创建管理员失败:', error);
    await prisma.$disconnect();
    process.exit(1);
  }
}

createTestAdmin();
